package com.znxs.user_center_c.service;

import com.znxs.user_center_c.model.dto.UserUpdateRequest;
import com.znxs.user_center_c.model.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.znxs.user_center_c.model.vo.UserVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
* @author znxs
* @description 针对表【user】的数据库操作Service
* @createDate 2023-08-30 15:19:35
*/
public interface UserService extends IService<User> {

    /**
     * 用户登录功能
     * @param userAccount 用户账户
     * @param userPassword 用户密码
     * @param checkedPassword 检查密码
     * @return 用户id
     */
    long userRegister(String userAccount,String userPassword,String checkedPassword);

    /**
     *  用户登录 （脱敏）
     * @param userAccount 用户账户
     * @param userPassword 用户密码
     * @return 用户脱敏信息
     */
    UserVO userLogin(String userAccount, String userPassword, HttpServletRequest request);

    /**
     * 用户脱敏
     * @param oldUser 没有脱敏的用户
     * @return 用户脱敏信息
     */
    UserVO getSafetyUser(User oldUser);

    /**
     * 退出登录功能
     * @param request http请求 用于获取当前登录用户
     * @return
     */
    int outLogin(HttpServletRequest request);

    /**
     * 用户注销功能
     * @param request http请求 用于获取当前登录用户
     * @return
     */
    int userClose(HttpServletRequest request);

    /**
     * 用户恢复账号功能
     * @param request http请求 用于获取当前登录用户
     * @return
     */
    int userRestore(HttpServletRequest request);

    /**
     * 修改用户信息
     * @param userUpdateRequest 用户传入数据，根据id进行修改
     * @param request http请求 用于获取当前登录用户
     * @return
     */
    int updateUserInfo(UserUpdateRequest userUpdateRequest, HttpServletRequest request);

    /**
     * 查看绑定过的系统
     * @param request http请求 用于获取当前登录用户
     * @return
     */
    List<String> watchUserSignSystem(HttpServletRequest request);
}
